package cn.foolishbird.crow.trusteeship;

import cn.iocoder.yudao.module.account.trusteeship.parameter.DirectTrusteeshipNumParameter;
import cn.iocoder.yudao.module.account.trusteeship.parameter.FreezeTrusteeshipNumParameter;

/**
 * @author foolishbird
 */
public interface TrusteeshipService {

    /**
     * 发起托管
     *
     * @return 托管编号
     */
    String launchTrusteeship(Trusteeship trusteeship);

    /**
     * 取消托管
     *
     * @param trusteeshipNo 托管编号
     * @return 返回成功， 取消成功
     */
    boolean cancelTrusteeship(String trusteeshipNo);

    /**
     * 直接操作托管字段
     *
     * @param parameter 请求参数
     * @return 直接操作成功
     */
    boolean directTrusteeshipNum(DirectTrusteeshipNumParameter parameter);

    /**
     * 冻结托管数字
     *
     * @param parameter 请求参数
     * @return 冻结成功，返回冻结编号
     */
    String freezeTrusteeshipNum(FreezeTrusteeshipNumParameter parameter);

    /**
     * 释放冻结金额
     *
     * @param freezeNo             冻结编号
     * @param operatingInstruction 操作说明
     * @return 返回true， 释放成功
     */
    boolean releaseFrozenTrusteeshipNum(String freezeNo, String operatingInstruction);

    /**
     * 冻结完成： 释放冻结金额，扣金额
     *
     * @param freezeNo             冻结编号
     * @param operatingInstruction 操作寿命
     * @return 返回true，冻结完成
     */
    boolean completeFrozenTrusteeshipNum(String freezeNo, String operatingInstruction);

}
